# -*- coding:utf-8 -*-

# 购物车讲解
'''
思路:
1. 先把商品内容存储到列表, 商品名称和价格在同一个列表. 嵌套列表.
2. 本金
'''

# 商品列表
product_list = [
    ('Mac',12000),
    ('kindle',1000),
    ('tesla',50000),
    ('python book',50),
    ('bike',500),
]

saving = input('please input your money:') # 输入为数字.
# saving是字符串类型. 我银行卡的钱

# 购物车
shop_car = []

# saving是字符串类型,字符串一定是数字的时候,才返回True.
if saving.isdigit():  
    # 转换为整型
    saving = int(saving) 

    # for i in product_list:
        # print(product_list.index(i),i)

    while True:
        # 打印商品内容
        for i,v in enumerate(product_list,1):
            print(i,v)
        
        # 引导用户选择商品
        choice = input('选择购买商品的编号[退出:q]:')

        # 验证输入是否合法
        if choice.isdigit():
            choice = int(choice)
            if choice > 0 and choice <= len(product_list):  # len取到的是商品的长度.
                # 将用户选择的商品通过choice取出来
                p_item = product_list[choice-1]

                # 如果银行卡钱充足,用本金saving减去该商品价格,并将该商品加入购物车
                if p_item[1]<saving:
                    saving -= p_item[1]
                    shop_car.append(p_item)
                else:
                    print('余额不足,还剩={}'.format(saving))
                print(p_item)  # p_item是元组类型.
            else:
                print('商品不存在')
        elif choice == 'q':
            print('---已经购买的商品列表------')
            # 循环遍历购物车里的商品,存放的是已购买的商品.
            for i,v in enumerate(shop_car,1):
                print(i,v)
            print('还剩下{}元'.format(saving))
            print('退出')
            break
        else:
            print('invalid input')


# 注意: 如果买了两件一样的商品,那么购物车是否应该显示2个.而不应该显示两个信息.

